This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.

install.packages("data.table")
library(data.table)

install.packages("plotly")
library(plotly)

install.packages("stringr")
library(stringr)

install.packages("stringr")
library(stringr)

install.packages("plyr")
library(plyr)

Crawford

library(data.table)
library(plotly)
library(stringr)
library("moments")


#pre <- fread("CYSMN_Pre Survey_MODIFIED.csv")
post <- fread("CYSMN_Post Survey_MODIFIED.csv")

scentB <- post[ which(str_detect(post$Q19, "B")),]
scentA <- post[ which(str_detect(post$Q19, "A")),]

# Begin Plots
Questions <- c("Q1", "Q2", "Q3")
rosemary <- c(mean(scentA$Q1), mean(scentA$Q2), mean(scentA$Q3))
lavender <- c(mean(scentB$Q1), mean(scentB$Q2), mean(scentB$Q3))
data <- data.frame(Questions, rosemary, lavender)


# Calculate standard deviations
lavender_sd <- rbind(scentA$Q1, scentA$Q2, scentA$Q3)
rosemary_sd <- rbind(scentB$Q1, scentB$Q2, scentB$Q3)
lavender_sd_final <- apply(lavender_sd, 1, function(x) sd(x))
rosemary_sd_final <- apply(rosemary_sd, 1, function(x) sd(x))

fig <- plot_ly(data, x = ~Questions, y = ~rosemary, type = 'bar', name = 'Rosemary', error_y = ~list(array = rosemary_sd_final, color = '#000000'))


fig <- fig %>% add_trace(y = ~lavender, name = 'Lavender', error_y = ~list(array = lavender_sd_final, color = '#000000'))


fig <- fig %>% layout(yaxis = list(title = 'Rating'), barmode = 'group')

fig


#Test Q1
wilcox.test(scentA$Q1, scentB$Q1, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q1 and scentB$Q1
W = 15.5, p-value = 0.6733
alternative hypothesis: true location shift is not equal to 0
#Test Q2
wilcox.test(scentA$Q2, scentB$Q2, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q2 and scentB$Q2
W = 15, p-value = 0.5948
alternative hypothesis: true location shift is not equal to 0
#Test Q3
wilcox.test(scentA$Q3, scentB$Q3, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q3 and scentB$Q3
W = 13, p-value = 0.4372
alternative hypothesis: true location shift is not equal to 0
#Test Q4
wilcox.test(scentA$Q4, scentB$Q4, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q4 and scentB$Q4
W = 9, p-value = 0.143
alternative hypothesis: true location shift is not equal to 0
#Test Q5
wilcox.test(scentA$Q5, scentB$Q5, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q5 and scentB$Q5
W = 10.5, p-value = 0.2259
alternative hypothesis: true location shift is not equal to 0
#Test Q6
wilcox.test(scentA$Q6, scentB$Q6, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q6 and scentB$Q6
W = 19.5, p-value = 0.8653
alternative hypothesis: true location shift is not equal to 0
#Test Q7
wilcox.test(scentA$Q7, scentB$Q7, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q7 and scentB$Q7
W = 19, p-value = 0.9313
alternative hypothesis: true location shift is not equal to 0
#Test Q7
wilcox.test(scentA$Q7, scentB$Q7, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q7 and scentB$Q7
W = 19, p-value = 0.9313
alternative hypothesis: true location shift is not equal to 0
#Test Q8
wilcox.test(scentA$Q8, scentB$Q8, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q8 and scentB$Q8
W = 27, p-value = 0.1597
alternative hypothesis: true location shift is not equal to 0
#Test Q9
wilcox.test(scentA$Q9, scentB$Q9, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q9 and scentB$Q9
W = 12, p-value = 0.2824
alternative hypothesis: true location shift is not equal to 0
#Test Q10
wilcox.test(scentA$Q10, scentB$Q10, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q10 and scentB$Q10
W = 17, p-value = 0.9312
alternative hypothesis: true location shift is not equal to 0
#Test Q11
wilcox.test(scentA$Q11, scentB$Q11, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q11 and scentB$Q11
W = 20, p-value = 0.8055
alternative hypothesis: true location shift is not equal to 0
#Test Q12
wilcox.test(scentA$Q12, scentB$Q12, paired = FALSE)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  scentA$Q12 and scentB$Q12
W = 14.5, p-value = 0.6229
alternative hypothesis: true location shift is not equal to 0

Load Data

rr

data <- fread(_Post Survey_MODIFIED.csv)

Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I. scriptive Statistics

rr

#Get Type A Questions

COLUMN STATEMENTS

Q1A <- c(scentA\(Q1) Q13A <- c(scentA\)Q13) Q14A <- c(scentA\(Q14) Q2A <- c(scentA\)Q2) Q3A <- c(scentA\(Q3) Q4A <- c(scentA\)Q4) Q5A <- c(scentA\(Q5) Q6A <- c(scentA\)Q6) Q7A <- c(scentA\(Q7) Q8A <- c(scentA\)Q8) Q9A <- c(scentA\(Q9) Q10A <- c(scentA\)Q10) Q11A <- c(scentA\(Q11) Q12A <- c(scentA\)Q12)

AVERAGE STATEMENTS

avgQ1A <- mean(Q1A) avgQ13A <- mean(Q13A) avgQ14A <- mean(Q14A) avgQ2A <- mean(Q2A) avgQ3A <- mean(Q3A) avgQ4A <- mean(Q4A) avgQ5A <- mean(Q5A) avgQ6A <- mean(Q6A) avgQ7A <- mean(Q7A) avgQ8A <- mean(Q8A) avgQ9A <- mean(Q9A) avgQ10A <- mean(Q10A) avgQ11A <- mean(Q11A) avgQ12A <- mean(Q12A)

COLUMN STATEMENTS

Q1B <- c(scentB\(Q1) Q13B <- c(scentB\)Q13) Q14B <- c(scentB\(Q14) Q2B <- c(scentB\)Q2) Q3B <- c(scentB\(Q3) Q4B <- c(scentB\)Q4) Q5B <- c(scentB\(Q5) Q6B <- c(scentB\)Q6) Q7B <- c(scentB\(Q7) Q8B <- c(scentB\)Q8) Q9B <- c(scentB\(Q9) Q10B <- c(scentB\)Q10) Q11B <- c(scentB\(Q11) Q12B <- c(scentB\)Q12)

AVERAGE STATEMENTS

avgQ1B <- mean(Q1B) avgQ13B <- mean(Q13B) avgQ14B <- mean(Q14B) avgQ2B <- mean(Q2B) avgQ3B <- mean(Q3B) avgQ4B <- mean(Q4B) avgQ5B <- mean(Q5B) avgQ6B <- mean(Q6B) avgQ7B <- mean(Q7B) avgQ8B <- mean(Q8B) avgQ9B <- mean(Q9B) avgQ10B <- mean(Q10B) avgQ11B <- mean(Q11B) avgQ12B <- mean(Q12B)

testQ1 <- wilcox.test(Q1B, Q1A, mu=0, alt=.sided, conf.int=T, conf.level=0.95, paired=T, exact=T, correct=T)

testQ1 <- t.test(Q1B, Q1A) print(testQ1)


    Welch Two Sample t-test

data:  Q1B and Q1A
t = 0.92848, df = 5.3567, p-value = 0.3931
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.428383  3.095050
sample estimates:
mean of x mean of y 
 6.166667  5.333333 

rr

New data frame for Type A

new_df_TA <- data.frame(Q1A, Q13A, Q14A, Q2A, Q3A, Q4A, Q5A, Q6A, Q7A, Q8A, Q9A, Q10A, Q11A, Q12A)

Skewed Values for Type A

skew_Q1A <- skewness(new_df_TA\(Q1A) skew_Q13A <- skewness(new_df_TA\)Q13A) skew_Q14A <- skewness(new_df_TA\(Q14A) skew_Q2A <- skewness(new_df_TA\)Q2A) skew_Q3A <- skewness(new_df_TA\(Q3A) skew_Q4A <- skewness(new_df_TA\)Q4A) skew_Q5A <- skewness(new_df_TA\(Q5A) skew_Q6A <- skewness(new_df_TA\)Q6A) skew_Q7A <- skewness(new_df_TA\(Q7A) skew_Q8A <- skewness(new_df_TA\)Q8A) skew_Q9A <- skewness(new_df_TA\(Q9A) skew_Q10A <- skewness(new_df_TA\)Q10A) skew_Q11A <- skewness(new_df_TA\(Q11A) skew_Q12A <- skewness(new_df_TA\)Q12A)

rr

library(datasets) data(iris) library(plotly) # https://plotly.com/r/line-and-scatter/

LS0tCnRpdGxlOiAiQ1lTTU4gRGF0YVNldDEiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgYW4gW1IgTWFya2Rvd25dKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20pIE5vdGVib29rLiBXaGVuIHlvdSBleGVjdXRlIGNvZGUgd2l0aGluIHRoZSBub3RlYm9vaywgdGhlIHJlc3VsdHMgYXBwZWFyIGJlbmVhdGggdGhlIGNvZGUuIAoKVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkNtZCtTaGlmdCtFbnRlciouIAoKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoImRhdGEudGFibGUiKQpsaWJyYXJ5KGRhdGEudGFibGUpCgppbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQpsaWJyYXJ5KHBsb3RseSkKCmluc3RhbGwucGFja2FnZXMoInN0cmluZ3IiKQpsaWJyYXJ5KHN0cmluZ3IpCgppbnN0YWxsLnBhY2thZ2VzKCJzdHJpbmdyIikKbGlicmFyeShzdHJpbmdyKQoKaW5zdGFsbC5wYWNrYWdlcygicGx5ciIpCmxpYnJhcnkocGx5cikKYGBgCgpDcmF3Zm9yZCAKYGBge3J9CmxpYnJhcnkoZGF0YS50YWJsZSkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoc3RyaW5ncikKbGlicmFyeSgibW9tZW50cyIpCgoKI3ByZSA8LSBmcmVhZCgiQ1lTTU5fUHJlIFN1cnZleV9NT0RJRklFRC5jc3YiKQpwb3N0IDwtIGZyZWFkKCJDWVNNTl9Qb3N0IFN1cnZleV9NT0RJRklFRC5jc3YiKQoKc2NlbnRCIDwtIHBvc3RbIHdoaWNoKHN0cl9kZXRlY3QocG9zdCRRMTksICJCIikpLF0Kc2NlbnRBIDwtIHBvc3RbIHdoaWNoKHN0cl9kZXRlY3QocG9zdCRRMTksICJBIikpLF0KCiMgQmVnaW4gUGxvdHMKUXVlc3Rpb25zIDwtIGMoIlExIiwgIlEyIiwgIlEzIikKcm9zZW1hcnkgPC0gYyhtZWFuKHNjZW50QSRRMSksIG1lYW4oc2NlbnRBJFEyKSwgbWVhbihzY2VudEEkUTMpKQpsYXZlbmRlciA8LSBjKG1lYW4oc2NlbnRCJFExKSwgbWVhbihzY2VudEIkUTIpLCBtZWFuKHNjZW50QiRRMykpCmRhdGEgPC0gZGF0YS5mcmFtZShRdWVzdGlvbnMsIHJvc2VtYXJ5LCBsYXZlbmRlcikKCgojIENhbGN1bGF0ZSBzdGFuZGFyZCBkZXZpYXRpb25zCmxhdmVuZGVyX3NkIDwtIHJiaW5kKHNjZW50QSRRMSwgc2NlbnRBJFEyLCBzY2VudEEkUTMpCnJvc2VtYXJ5X3NkIDwtIHJiaW5kKHNjZW50QiRRMSwgc2NlbnRCJFEyLCBzY2VudEIkUTMpCmxhdmVuZGVyX3NkX2ZpbmFsIDwtIGFwcGx5KGxhdmVuZGVyX3NkLCAxLCBmdW5jdGlvbih4KSBzZCh4KSkKcm9zZW1hcnlfc2RfZmluYWwgPC0gYXBwbHkocm9zZW1hcnlfc2QsIDEsIGZ1bmN0aW9uKHgpIHNkKHgpKQoKZmlnIDwtIHBsb3RfbHkoZGF0YSwgeCA9IH5RdWVzdGlvbnMsIHkgPSB+cm9zZW1hcnksIHR5cGUgPSAnYmFyJywgbmFtZSA9ICdSb3NlbWFyeScsIGVycm9yX3kgPSB+bGlzdChhcnJheSA9IHJvc2VtYXJ5X3NkX2ZpbmFsLCBjb2xvciA9ICcjMDAwMDAwJykpCgoKZmlnIDwtIGZpZyAlPiUgYWRkX3RyYWNlKHkgPSB+bGF2ZW5kZXIsIG5hbWUgPSAnTGF2ZW5kZXInLCBlcnJvcl95ID0gfmxpc3QoYXJyYXkgPSBsYXZlbmRlcl9zZF9maW5hbCwgY29sb3IgPSAnIzAwMDAwMCcpKQoKCmZpZyA8LSBmaWcgJT4lIGxheW91dCh5YXhpcyA9IGxpc3QodGl0bGUgPSAnUmF0aW5nJyksIGJhcm1vZGUgPSAnZ3JvdXAnKQoKZmlnCgojVGVzdCBRMQp3aWxjb3gudGVzdChzY2VudEEkUTEsIHNjZW50QiRRMSwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRMgp3aWxjb3gudGVzdChzY2VudEEkUTIsIHNjZW50QiRRMiwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRMwp3aWxjb3gudGVzdChzY2VudEEkUTMsIHNjZW50QiRRMywgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRNAp3aWxjb3gudGVzdChzY2VudEEkUTQsIHNjZW50QiRRNCwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRNQp3aWxjb3gudGVzdChzY2VudEEkUTUsIHNjZW50QiRRNSwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRNgp3aWxjb3gudGVzdChzY2VudEEkUTYsIHNjZW50QiRRNiwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRNwp3aWxjb3gudGVzdChzY2VudEEkUTcsIHNjZW50QiRRNywgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRNwp3aWxjb3gudGVzdChzY2VudEEkUTcsIHNjZW50QiRRNywgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBROAp3aWxjb3gudGVzdChzY2VudEEkUTgsIHNjZW50QiRROCwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBROQp3aWxjb3gudGVzdChzY2VudEEkUTksIHNjZW50QiRROSwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRMTAKd2lsY294LnRlc3Qoc2NlbnRBJFExMCwgc2NlbnRCJFExMCwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRMTEKd2lsY294LnRlc3Qoc2NlbnRBJFExMSwgc2NlbnRCJFExMSwgcGFpcmVkID0gRkFMU0UpCgojVGVzdCBRMTIKd2lsY294LnRlc3Qoc2NlbnRBJFExMiwgc2NlbnRCJFExMiwgcGFpcmVkID0gRkFMU0UpCgoKCmBgYAoKTG9hZCBEYXRhCmBgYHtyfQoKI2RhdGEgPC0gZnJlYWQoIkNZU01OX1Bvc3QgU3VydmV5X01PRElGSUVELmNzdiIpCiNzY2VudEIgPC0gZGF0YVsgd2hpY2goc3RyX2RldGVjdChkYXRhJFExOSwgIkIiKSksXQojc2NlbnRBIDwtIGRhdGFbIHdoaWNoKHN0cl9kZXRlY3QoZGF0YSRRMTksICJBIikpLF0KCmBgYAoKCkFkZCBhIG5ldyBjaHVuayBieSBjbGlja2luZyB0aGUgKkluc2VydCBDaHVuayogYnV0dG9uIG9uIHRoZSB0b29sYmFyIG9yIGJ5IHByZXNzaW5nICpDbWQrT3B0aW9uK0kqLgpzY3JpcHRpdmUgU3RhdGlzdGljcwpgYGB7cn0KCgpgYGAKCgoKYGBge3J9CgojR2V0IFR5cGUgQSBRdWVzdGlvbnMKCiMjIyMjIyMjIyMjIyMjICAgICAgIENPTFVNTiBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwpRMUEgPC0gYyhzY2VudEEkUTEpClExM0EgPC0gYyhzY2VudEEkUTEzKQpRMTRBIDwtIGMoc2NlbnRBJFExNCkKUTJBIDwtIGMoc2NlbnRBJFEyKQpRM0EgPC0gYyhzY2VudEEkUTMpClE0QSA8LSBjKHNjZW50QSRRNCkKUTVBIDwtIGMoc2NlbnRBJFE1KQpRNkEgPC0gYyhzY2VudEEkUTYpClE3QSA8LSBjKHNjZW50QSRRNykKUThBIDwtIGMoc2NlbnRBJFE4KQpROUEgPC0gYyhzY2VudEEkUTkpClExMEEgPC0gYyhzY2VudEEkUTEwKQpRMTFBIDwtIGMoc2NlbnRBJFExMSkKUTEyQSA8LSBjKHNjZW50QSRRMTIpCgoKIyMjIyMjIyMjIyMjIyMgICAgICAgQVZFUkFHRSBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwphdmdRMUEgPC0gbWVhbihRMUEpCmF2Z1ExM0EgPC0gbWVhbihRMTNBKQphdmdRMTRBIDwtIG1lYW4oUTE0QSkKYXZnUTJBIDwtIG1lYW4oUTJBKQphdmdRM0EgPC0gbWVhbihRM0EpCmF2Z1E0QSA8LSBtZWFuKFE0QSkKYXZnUTVBIDwtIG1lYW4oUTVBKQphdmdRNkEgPC0gbWVhbihRNkEpCmF2Z1E3QSA8LSBtZWFuKFE3QSkKYXZnUThBIDwtIG1lYW4oUThBKQphdmdROUEgPC0gbWVhbihROUEpCmF2Z1ExMEEgPC0gbWVhbihRMTBBKQphdmdRMTFBIDwtIG1lYW4oUTExQSkKYXZnUTEyQSA8LSBtZWFuKFExMkEpCgojIyMjIyMjIyMjIyMjIyAgICAgICBQUklOVCBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwpzdHJpbmdRMUEgPC0gIlF1ZXN0aW9uIDEgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1ExQSwgYXZnUTFBKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTNBIDwtICJRdWVzdGlvbiAyIGZvciBUeXBlIEEgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTNBLCBhdmdRMTNBKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTRBIDwtICJRdWVzdGlvbiAzIGZvciBUeXBlIEEgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTRBLCBhdmdRMTRBKSkKcHJpbnQoIiIpCgpzdHJpbmdRMkEgPC0gIlF1ZXN0aW9uIDQgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1EyQSwgYXZnUTJBKSkKcHJpbnQoIiIpCgpzdHJpbmdRM0EgPC0gIlF1ZXN0aW9uIDUgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1EzQSwgYXZnUTNBKSkKcHJpbnQoIiIpCgpzdHJpbmdRNEEgPC0gIlF1ZXN0aW9uIDYgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E0QSwgYXZnUTRBKSkKcHJpbnQoIiIpCgpzdHJpbmdRNUEgPC0gIlF1ZXN0aW9uIDcgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E1QSwgYXZnUTVBKSkKcHJpbnQoIiIpCgpzdHJpbmdRNkEgPC0gIlF1ZXN0aW9uIDggZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E2QSwgYXZnUTZBKSkKcHJpbnQoIiIpCgpzdHJpbmdRN0EgPC0gIlF1ZXN0aW9uIDkgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E3QSwgYXZnUTdBKSkKcHJpbnQoIiIpCgpzdHJpbmdROEEgPC0gIlF1ZXN0aW9uIDEwIGZvciBUeXBlIEEgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdROEEsIGF2Z1E4QSkpCnByaW50KCIiKQoKc3RyaW5nUTlBIDwtICJRdWVzdGlvbiAxMSBmb3IgVHlwZSBBIGF2ZXJhZ2U6ICIKcHJpbnQocGFzdGUoc3RyaW5nUTlBLCBhdmdROUEpKQpwcmludCgiIikKCnN0cmluZ1ExMEEgPC0gIlF1ZXN0aW9uIDEyIGZvciBUeXBlIEEgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTBBLCBhdmdRMTBBKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTFBIDwtICJRdWVzdGlvbiAxMyBmb3IgVHlwZSBBIGF2ZXJhZ2U6ICIKcHJpbnQocGFzdGUoc3RyaW5nUTExQSwgYXZnUTExQSkpCnByaW50KCIiKQoKc3RyaW5nUTEyQSA8LSAiUXVlc3Rpb24gMTQgZm9yIFR5cGUgQSBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1ExMkEsIGF2Z1ExMkEpKQpwcmludCgiIikKCmBgYAoKYGBge3J9CgojR2V0IFR5cGUgQiBRdWVzdGlvbnMKCiMjIyMjIyMjIyMjIyMjICAgICAgIENPTFVNTiBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwpRMUIgPC0gYyhzY2VudEIkUTEpClExM0IgPC0gYyhzY2VudEIkUTEzKQpRMTRCIDwtIGMoc2NlbnRCJFExNCkKUTJCIDwtIGMoc2NlbnRCJFEyKQpRM0IgPC0gYyhzY2VudEIkUTMpClE0QiA8LSBjKHNjZW50QiRRNCkKUTVCIDwtIGMoc2NlbnRCJFE1KQpRNkIgPC0gYyhzY2VudEIkUTYpClE3QiA8LSBjKHNjZW50QiRRNykKUThCIDwtIGMoc2NlbnRCJFE4KQpROUIgPC0gYyhzY2VudEIkUTkpClExMEIgPC0gYyhzY2VudEIkUTEwKQpRMTFCIDwtIGMoc2NlbnRCJFExMSkKUTEyQiA8LSBjKHNjZW50QiRRMTIpCgoKIyMjIyMjIyMjIyMjIyMgICAgICAgQVZFUkFHRSBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwphdmdRMUIgPC0gbWVhbihRMUIpCmF2Z1ExM0IgPC0gbWVhbihRMTNCKQphdmdRMTRCIDwtIG1lYW4oUTE0QikKYXZnUTJCIDwtIG1lYW4oUTJCKQphdmdRM0IgPC0gbWVhbihRM0IpCmF2Z1E0QiA8LSBtZWFuKFE0QikKYXZnUTVCIDwtIG1lYW4oUTVCKQphdmdRNkIgPC0gbWVhbihRNkIpCmF2Z1E3QiA8LSBtZWFuKFE3QikKYXZnUThCIDwtIG1lYW4oUThCKQphdmdROUIgPC0gbWVhbihROUIpCmF2Z1ExMEIgPC0gbWVhbihRMTBCKQphdmdRMTFCIDwtIG1lYW4oUTExQikKYXZnUTEyQiA8LSBtZWFuKFExMkIpCgojIyMjIyMjIyMjIyMjIyAgICAgICBQUklOVCBTVEFURU1FTlRTICAgICAgICAgICMjIyMjIyMjIyMjIyMjIwpzdHJpbmdRMUIgPC0gIlF1ZXN0aW9uIDEgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1ExQiwgYXZnUTFCKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTNCIDwtICJRdWVzdGlvbiAyIGZvciBUeXBlIEIgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTNCLCBhdmdRMTNCKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTRCIDwtICJRdWVzdGlvbiAzIGZvciBUeXBlIEIgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTRCLCBhdmdRMTRCKSkKcHJpbnQoIiIpCgpzdHJpbmdRMkIgPC0gIlF1ZXN0aW9uIDQgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1EyQiwgYXZnUTJCKSkKcHJpbnQoIiIpCgpzdHJpbmdRM0IgPC0gIlF1ZXN0aW9uIDUgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1EzQiwgYXZnUTNCKSkKcHJpbnQoIiIpCgpzdHJpbmdRNEIgPC0gIlF1ZXN0aW9uIDYgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E0QiwgYXZnUTRCKSkKcHJpbnQoIiIpCgpzdHJpbmdRNUIgPC0gIlF1ZXN0aW9uIDcgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E1QiwgYXZnUTVCKSkKcHJpbnQoIiIpCgpzdHJpbmdRNkIgPC0gIlF1ZXN0aW9uIDggZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E2QiwgYXZnUTZCKSkKcHJpbnQoIiIpCgpzdHJpbmdRN0IgPC0gIlF1ZXN0aW9uIDkgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1E3QiwgYXZnUTdCKSkKcHJpbnQoIiIpCgpzdHJpbmdROEIgPC0gIlF1ZXN0aW9uIDEwIGZvciBUeXBlIEIgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdROEIsIGF2Z1E4QikpCnByaW50KCIiKQoKc3RyaW5nUTlCIDwtICJRdWVzdGlvbiAxMSBmb3IgVHlwZSBCIGF2ZXJhZ2U6ICIKcHJpbnQocGFzdGUoc3RyaW5nUTlCLCBhdmdROUIpKQpwcmludCgiIikKCnN0cmluZ1ExMEIgPC0gIlF1ZXN0aW9uIDEyIGZvciBUeXBlIEIgYXZlcmFnZTogIgpwcmludChwYXN0ZShzdHJpbmdRMTBCLCBhdmdRMTBCKSkKcHJpbnQoIiIpCgpzdHJpbmdRMTFCIDwtICJRdWVzdGlvbiAxMyBmb3IgVHlwZSBCIGF2ZXJhZ2U6ICIKcHJpbnQocGFzdGUoc3RyaW5nUTExQiwgYXZnUTExQikpCnByaW50KCIiKQoKc3RyaW5nUTEyQiA8LSAiUXVlc3Rpb24gMTQgZm9yIFR5cGUgQiBhdmVyYWdlOiAiCnByaW50KHBhc3RlKHN0cmluZ1ExMkIsIGF2Z1ExMkIpKQpwcmludCgiIikKCmBgYAoKYGBge3J9CgojIyMjIyMjIyMjIyMjIyMgICAgICAgICAgV2lsY294IFRlc3RpbmcgZm9yIFR5cGUgQSAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgdGVzdFExIDwtIHdpbGNveC50ZXN0KFExQiwgUTFBLCBtdT0wLCBhbHQ9InR3by5zaWRlZCIsIGNvbmYuaW50PVQsIGNvbmYubGV2ZWw9MC45NSwgcGFpcmVkPVQsIGV4YWN0PVQsIGNvcnJlY3Q9VCkKCnRlc3RRMSA8LSB0LnRlc3QoUTFCLCBRMUEpCnByaW50KHRlc3RRMSkKCmBgYAoKCgpgYGB7cn0KCiMjIyMjIyMjIyAgICAgICAgICAgTmV3IGRhdGEgZnJhbWUgZm9yIFR5cGUgQSAjIyMjIyMjIyMjIyMjIyMjIyMjCm5ld19kZl9UQSA8LSBkYXRhLmZyYW1lKFExQSwgUTEzQSwgUTE0QSwgUTJBLCBRM0EsIFE0QSwgUTVBLCBRNkEsIFE3QSwgUThBLCBROUEsIFExMEEsIFExMUEsIFExMkEpCgojIyMjIyMjIyMjIyMgICAgIFNrZXdlZCBWYWx1ZXMgZm9yIFR5cGUgQSAgICAgICMjIyMjIyMjIyMjIyMKc2tld19RMUEgPC0gc2tld25lc3MobmV3X2RmX1RBJFExQSkKc2tld19RMTNBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRMTNBKQpza2V3X1ExNEEgPC0gc2tld25lc3MobmV3X2RmX1RBJFExNEEpCnNrZXdfUTJBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRMkEpCnNrZXdfUTNBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRM0EpCnNrZXdfUTRBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRNEEpCnNrZXdfUTVBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRNUEpCnNrZXdfUTZBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRNkEpCnNrZXdfUTdBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRN0EpCnNrZXdfUThBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRROEEpCnNrZXdfUTlBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRROUEpCnNrZXdfUTEwQSA8LSBza2V3bmVzcyhuZXdfZGZfVEEkUTEwQSkKc2tld19RMTFBIDwtIHNrZXduZXNzKG5ld19kZl9UQSRRMTFBKQpza2V3X1ExMkEgPC0gc2tld25lc3MobmV3X2RmX1RBJFExMkEpCgoKYGBgCgoKCmBgYHtyfQoKbGlicmFyeShkYXRhc2V0cykKZGF0YShpcmlzKQpsaWJyYXJ5KHBsb3RseSkKIyBodHRwczovL3Bsb3RseS5jb20vci9saW5lLWFuZC1zY2F0dGVyLwoKCgpgYGAKCgoKCgpgYGB7cn0KCmBgYAoKCgoKCgo=